{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import random\n\nvoisins = [[1, 2, 3, 4, 5],\n [0, 2, 3],\n [0, 1, 5],\n [0, 1],\n [0],\n [0, 2]]\n\ndef voisin_alea(voisins, s):\n return voisins[s][random.randrange(len(voisins[s]))]\n\ndef marche_alea(voisins, i, n):\n if n == 0:\n return i\n return marche_alea(voisins, voisin_alea(voisins, i), n - 1)\n\ndef simule(voisins, i, n_tests, n_pas):\n results = [0] * len(voisins)\n for _ in range(n_tests):\n j = marche_alea(voisins, i, n_pas)\n results[j] += 1\n return [total / n_tests for total in results]\n\nfrequences = simule(voisins, 3, 1000, 10)\nprint(f\"Fréquences obtenues : {frequences}\")\nprint(f\"L'ordinateur 0 a la fréquence la plus élevée avec {frequences[0] * 100:.1f}% de chances.\")\n\ndef temps_propagation(voisins, s):\n infectes = [0] * len(voisins)\n infectes[s] = 1\n pas = 0\n tous_infectes = [1] * len(voisins)\n \n print(infectes)\n while infectes != tous_infectes:\n nouveau_infectes = [0] * len(voisins)\n for infecte in infectes:\n sommet_aleatoire = marche_alea(voisins, infecte, 2) # Marche aléatoire\n nouveau_infectes[sommet_aleatoire] = 1\n\n for i in range(len(voisins)):\n if nouveau_infectes[i]==1 and infectes[i]==0:\n infectes[i]=1\n\n print(infectes)\n pas += 1\n\n return pas\n\nprint(f\"Temps de propagation depuis le sommet 3 : {temps_propagation(voisins, 3)} étapes\")","execution_count":9,"outputs":[{"output_type":"stream","text":"Fréquences obtenues : [0.322, 0.171, 0.194, 0.123, 0.057, 0.133]\nL'ordinateur 0 a la fréquence la plus élevée avec 32.2% de chances.\n[0, 0, 0, 1, 0, 0]\n[1, 1, 0, 1, 1, 0]\n[1, 1, 1, 1, 1, 1]\nTemps de propagation depuis le sommet 3 : 2 étapes\n","name":"stdout"}]}],"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3","language":"python"}},"nbformat":4,"nbformat_minor":2}